// 类型推论
let str = 'str'
// typescript会在没有明确指定类型的时候，推测出一个类型出来
// str = 123;

// 联合类型
let numberOrString: number | string
numberOrString = 'abc'
numberOrString = 123

function getLength(input: string | number): number {
    // 类型断言：电脑你没法判断我的代码，但是我本人是清楚的
    const str = input as string
    if (str.length) {
        return str.length
    } else {
        const number = input as number
        return number.toString().length
    }
}

// 类型守护type guard
function getLength(input: string | number): number {
    const str = input as string
    if (str.length) {
        return str.length
    } else {
        const number = input as number
        return number.toString().length
    }
}